﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using QLPKWeb.Models.FormBean.Base;
using DONGACS.DTO;
using Webdiyer.WebControls.Mvc;

namespace QLPKWeb.Models.FormBean.PhanQuyen
{
    public class UsersForm:FormBase<UsersDto>
    {
        /// <summary>
        /// Gets or sets UserName.
        /// </summary>
        public System.String UserName { get; set; }

        /// <summary>
        /// Gets or sets FirstName.
        /// </summary>
        public System.String FirstName { get; set; }

        /// <summary>
        /// Gets or sets LastName.
        /// </summary>
        public System.String LastName { get; set; }

        /// <summary>
        /// Gets or sets Password.
        /// </summary>
        public System.String Password { get; set; }

        /// <summary>
        /// Gets or sets BirthDay.
        /// </summary>
        public System.DateTime BirthDay { get; set; }

        /// <summary>
        /// Gets or sets Email.
        /// </summary>
        public System.String Email { get; set; }

        /// <summary>
        /// Gets or sets MobileAlias.
        /// </summary>
        public System.String Mobile { get; set; }

        /// <summary>
        /// Gets or sets Sex.
        /// </summary>
        public System.Boolean Sex { get; set; }

        /// <summary>
        /// Gets or sets LastLoginDate.
        /// </summary>
        public System.DateTime LastLoginDate { get; set; }

        /// <summary>
        /// Gets or sets LastPasswordChangedDate.
        /// </summary>
        public System.DateTime LastPasswordChangedDate { get; set; }

        /// <summary>
        /// Gets or sets CreateDate.
        /// </summary>
        public System.DateTime CreateDate { get; set; }

        /// <summary>
        /// Gets or sets UpdateDate.
        /// </summary>
        public System.DateTime UpdateDate { get; set; }

        /// <summary>
        /// Gets or sets CreateBy.
        /// </summary>
        public string CreateBy { get; set; }

        /// <summary>
        /// Gets or sets UpdateBy.
        /// </summary>
        public string UpdateBy { get; set; }

        /// <summary>
        /// Gets or sets IsAdministrator.
        /// </summary>
        public System.Boolean IsAdministrator { get; set; }

        /// <summary>
        /// Gets or sets IsEnable.
        /// </summary>
        public System.Boolean IsActive { get; set; }

        /// <summary>
        /// Gets or sets IsDelete.
        /// </summary>
        public System.Boolean IsDelete { get; set; }



        //Extend
       
        public IList<UsersDto> UsersList { get; set; }

        public PagedList<UsersDto> UsersPagedList { get; set; }

        public string UserID { get; set; }

        /// <summary>
        /// Gets or sets IDUser for user login.
        /// </summary>
        public int UserLoginID { get; set; }

        /// <summary>
        /// Gets or sets PasswordChange.
        /// </summary>
        public string PasswordChange { get; set; }

        /// <summary>
        /// Gets or sets rePasswordChange.
        /// </summary>
        public string RePasswordChange { get; set; }

        /// <summary>
        /// Gets or sets the current users id.
        /// </summary>
        /// <value>The current users id.</value>
        public string CurrentUsersId { get; set; }

        /// <summary>
        /// Gets or sets the current usersid Temp.
        /// </summary>
        /// <value>The current usersid Temp.</value>
        public string CurrentUsersIdTemp { get; set; }

        public bool PasswordReadOnly { get; set; }
        public bool UserNameReadOnly { get; set; }
        /// <summary>
        /// Gets or sets the hid last tab.
        /// </summary>
        /// <value>The hid last tab.</value>
        public int HidLastTab { get; set; }

        /// <summary>
        /// Gets or sets Message when Changing Password.
        ///</summary>
        /// <value>Messag eChange Password.</value>
        public string MessageChangePassword { get; set; }

        public string MessageEditUser{ get; set; }

        public string MessageCreateUser { get; set; }




        //Extend cho phần quản lý Chức vụ kiêm của User
        public IList<JobTitlesDto> JobTitlesList { get; set; }
        public IList<UserInJobTitleInDepartmentDto> UserInJobTitleInDepartmentList { get; set; } //danh sách chứa các đối tựong UserInJobTitleInDepartment : là các chức vụ một nhân viên hiện hành đang kiêm
        public SelectList JobTitlesSelectList { get; set; }
        public SelectList DepartmentsSelectList { get; set; }
        public int Department { get; set; }
        public int JobTitle { get; set; }

        public string ChucVuKiemString { get; set; }// chuổi chứa những ID chức vụ một nhân viên xác định đang kiêm

        


        public IList<PathsDto> PathsList { get; set; }

        public IList<PermissionsPerUsersDto> PermissonPerUsersByUserIdList { get; set; }

        public List<PathsDto> PathsForUserList { get; set; }

        //những roles sẵn sàng đã gán cho một user hiện hành
        public SelectList AvaiableRolesList { get; set; }

        //những roles sẵn sàng đã gán cho một user hiện hành
        public SelectList NotAssignedRolesList { get; set; }

        //Mọi Blocks trong Ứng đụng
        public IList<string> Blocks { get; set; }
        //Mọi module trong Ứng đụng
        public IList<string> Modules { get; set; }
        //Mảng các List chứa Module theo Block
        public IList<string>[] ModulesByBlockArray { get; set; }

        
        public string UpdateRoleSatusMessage { get; set; }

        public string UpdateSatusMessage { get; set; }

        public string Flag { get; set; }

        public bool UpdateRolesFlag { get; set; }

        public bool UpdatePermissionPerUserFlag { get; set; }

        public string NewVailableRoleIdString { get; set; }

        public string NewPermissionPerUserString { get; set; }
        
        //Search
        public SelectList TieuChiSearchDropDownList { get; set; } // selectlist các tiêu chí search cán bộ
        public int TieuChiSearch { get; set; } //tiêu chí search cán bộ
        public string GiaTriSearch { get; set; } //giá trị search cán bộ

        //Phục vụ phân trang
        public int CurrentPageNumber { get; set; }
    }
}
